package random

import "strings"

var (
	DICT_  = DICT_FIXED()
	REGION = []string{
		"东北", "华北", "华东", "华中", "华南", "西南", "西北",
	}
)

// Region 随机生成一个大区。
func Region() string {
	return Pick(REGION, 0, len(REGION))
}

// Province 随机生成一个（中国）省（或直辖市、自治区、特别行政区）。
func Province() string {
	var province = Pick(DICT_, 0, len(DICT_))
	return province.Name
}

// City 随机生成一个（中国）市。
func City(prefix bool) string {
	var province = Pick(DICT_, 0, len(DICT_))
	var city = Pick(province.Children, 0, len(province.Children))
	if prefix {
		return strings.Join([]string{
			province.Name, city.Name,
		}, " ")
	} else {
		return city.Name
	}
}

// County 随机生成一个（中国）县。
func County(prefix bool) string {
	var province = Pick(DICT_, 0, len(DICT_))
	var city = Pick(province.Children, 0, len(province.Children))
	var county *TreeNode
	if len(city.Children) > 0 {
		county = Pick(city.Children, 0, len(city.Children))
	}
	countyName := ""
	if county == nil || len(county.Name) == 0 {
		countyName = "-"
	} else {
		countyName = county.Name
	}
	if prefix {
		return strings.Join([]string{
			province.Name, city.Name, countyName,
		}, " ")
	}
	return countyName
}

// Zip 随机生成一个邮政编码（六位数字）。
func Zip(len int) string {
	var zip = []byte{}
	if len == 0 {
		len = 6
	}
	for i := 0; i < len; i++ {
		zip = append(zip, byte(Natural('0', '9')))
	}
	return string(zip)
}
